import fs from "then-fs"
async function get() {
  
    const s1 = await fs.readFile('./data.json', 'utf8')
  return JSON.parse(s1)
}
// get().then(res=>console.log(res))


async function add(obj) {
  try {
    const arr = await get()
    obj.id = arr[arr.length - 1].id + 1
    arr.push(obj)
    fs.writeFile('./data.json', JSON.stringify(arr));
        return '添加成功';
  } catch (e) {
    return '添加失败';
  } 
}
// // 测试
// add({
//     "author": "大刘",
//     "bookname": "三体2",
//     "publisher": "湖北人民出版社"
// }).then(res => {
//     console.log(res);
// })

// 3.删除 - 返回一个 Promise 对象;
async function del(id) {
  try {
      // 获取数组
      const arr = await get();
      // 删除元素id，和传递的id值相同的那一项
      //    过滤新数组，传递过来的id值，和元素的id值不相同，才有资格放入新数组;
      const newArr = arr.filter(ele => id != ele.id);
      // 写入文件 - 写入新数组！
      fs.writeFile('./data.json', JSON.stringify(newArr));
      return '删除成功';
  } catch (e) {
      return '删除失败';
  }
}
// // 测试 - id如果不存在，不会引起错误！
// del(6).then(res => {
//     console.log(res);
// });

// 4.修改 - 返回一个 Promise 对象;
async function update(obj) {
  try {
      // 获取数组
      const arr = await get();
      // 获取索引值，删除元素，添加元素;
      const index = arr.findIndex(ele => ele.id == obj.id);
      arr.splice(index, 1, obj);
      // 写入文件
      fs.writeFile('./data.json', JSON.stringify(arr));
      // 返回
      return '修改成功';
  } catch (e) {
      console.log(e.message);
      return '修改失败';
  }
}
// // 测试
// update({
//     "author": "刘慈欣",
//     "bookname": "三体3-死神永生",
//     "publisher": "湖北人民出版社",
//     "id": 5
// }).then(res => {
//     console.log(res);
// });

// 导出
export default {
  get, add, del, update
}

